The present invention relates to data communications and more particularly to a method of communicating message payload data in a striped manner over a network.
Communication bandwidth is a key element of communication protocol performance. Communication bandwidth can sometimes be increased when messages are striped. The striping of a message refers to transmission of the message between two endpoints (a source node and a “target node” or “destination node”) of a network as separately managed submessages via communication resources (network adapter resources and communication paths) that are allowed to vary from one submessage to another.
The striping of messages is relatively straightforward when the message data to be transmitted are stored at contiguous locations of a user buffer. In such case, a message can be easily divided up into submessages, and the start and endpoints of the data to be transmitted are easily determined.
However, messages can also be transmitted from data that is noncontiguous, that is, data which are distributed at different locations. An example of a noncontiguous data transfer protocol is one in which the locations of data to be transferred are defined by execution of a program. When such program is executed, the resulting locations of data transferred by the program are defined by a series of commands such as “Start at offset 10. Copy (transfer) 12 bytes. Skip the next 8 bytes. Copy 6 bytes. Skip the next 7 bytes. Copy 16 bytes.” In such an arrangement, it is normally impossible to determine where the locations of the noncontiguous data will be until the data transfer program is executed. For these communication protocols, the striping of a message can be problematic.
Another way that this can be viewed is that during the execution of the communication program, the communication program alters the state of the environment in which it operates. Changes in the environment's state over time while executing the communication program have a profound effect on the ability to concurrently transmit a set of ordered submessages. Such changes make it difficult to determine where the data begins and ends for a particular submessage, e.g., a first submessage, prior to actually assembling and transmitting the particular submessage in its entirety. Without this knowledge, a benefit of striping the message is lost, because a second ordered submessage cannot begin to be transmitted until the first submessage has been completely transmitted.
In view of the foregoing, a method and apparatus are needed by which message payload data, especially noncontiguous data, can be striped as a plurality of ordered submessages even when the execution of a communication program within an environment changes the state of that environment or is needed to determine the locations of the noncontiguous data.